<?php
/**
 * Автоматическая загрузка моделей, модели могут иметь влоежнные директории.
 *
 *
 * @author nrnwest@gmail.com
 *
 */
class Arm_Loader_Model implements Zend_Loader_Autoloader_Interface
{

    /**
     * Зарезивированные директории.
     * @var array
     */
    private $_dirReservation = array('form'=>'forms', 'model'=>'models', 'validate'=>'validates', 'filter'=>'filters', 'service'=>'services');
    
    public function autoload ($class)
    {
            if (true === class_exists($class, false)) {
                return $class;
            }
        $array = explode('_', $class);
        $module = array_shift($array);
        $dirReserv = strtolower(array_shift($array));
            if(array_key_exists($dirReserv, $this->_dirReservation) === true) {
                $dirReserv = $this->_dirReservation[$dirReserv];
            }
            
        $path  = Arm_Core::getPathModule($module) . DIRECTORY_SEPARATOR . $dirReserv . DIRECTORY_SEPARATOR;
        $path .= implode(DIRECTORY_SEPARATOR, $array) . '.php';
            if (false === is_file($path)) {
                return false;
            }
        require_once $path;
            if (false === class_exists($class, false)) {
                return false;
            }
        return $class;
    }
}